class _fileSystem {
    constructor() {
        this.root = {};
        this.currentDir = this.root;
    }

    /**
     * 创建目录
     * @param {string} dirName
     */
    makeDir(dirName) {}
}

let ins = null;

function FileSystem() {
    ins = new _fileSystem();
    return null;
}

function makeDir(dirName) {
    if (ins.currentDir.hasOwnProperty(dirName)) {
        return false;
    }

    ins.currentDir[dirName] = {};
    return true;
}

function listDir() {
    let arr = [];
    Object.keys(ins.currentDir).forEach((ele) => {
        arr.push(ele);
    });

    return JSON.stringify(arr);
}

function changeDir(path) {
    let tempCurrentDir = ins.currentDir;
    if (path['0'] === '/') {
        tempCurrentDir = ins.root;
    }

    // 校验路径
    let dirs = path.split('/');

    dirs.filter((dir) => !!dir).forEach((dir) => {
        tempCurrentDir.hasOwnProperty(dir) && tempCurrentDir[dir] != 'file';
    });
}

FileSystem(); // null
makeDir('dirc'); // true
makeDir('dirb'); // true
makeDir('dirc'); // false
listDir(); // ['dirb','dirc']
changeDir('dirc/'); // true
createFile('fileb'); // true
makeDir('dirb'); // true
createFile('dirb'); // false
listDir(); // ['dirb','fileb']
changeDir('/dirb/dirc'); // false

FileSystem(); // null
listDir(); // []
changeDir(''); // true
createFile('gateway'); // true
makeDir('home'); // true
changeDir('gateway'); // false 当前目录下存在文件gateway,但它不是一个目录，所以切换目录失败
makeDir('etc'); // true
listDir(); // ['etc','home','gateway']
remove('gateway'); // true
changeDir('etc/'); // true
createFile('pip'); // true
changeDir('/etc/'); // true
listDir(); // ['pip']
changeDir('/'); // true;
listDir(); // ['home']
